// Promise 是一个构造函数

// 创建Promise容器
// 1. 给别人一个承诺
// Promise 容器一旦创建，就开始执行里面的代码
var fs = require('fs')
var p1 = new Promise( (resolve, reject) => {
    fs.readFile('./data/a.txt', 'utf8', (err, data) => {
        if (err) {
          // 失败了
          // reject 相当于调用了then 方法的第二个参数函数
          reject(err)  
        } else {
          // 成功了
          // resolve方法实际上就是then方法
         resolve(data)
        }
    })
})

var p2 = new Promise( (resolve, reject) => {
    fs.readFile('./data/b.txt', 'utf8', (err, data) => {
        if (err) {
          // 失败了
          // reject 相当于调用了then 方法的第二个参数函数
          reject(err)  
        } else {
          // 成功了
          // resolve方法实际上就是then方法
         resolve(data)
        }
    })
})

var p3 = new Promise( (resolve, reject) => {
    fs.readFile('./data/c.txt', 'utf8', (err, data) => {
        if (err) {
          // 失败了
          // reject 相当于调用了then 方法的第二个参数函数
          reject(err)  
        } else {
          // 成功了
          // resolve方法实际上就是then方法
         resolve(data)
        }
    })
})

// 当p1成功了，做指定操作
p1.
    then((data) => {
        console.log(data)
        // p1 读取成功的时候
        // 当前函数中 return 的结果就可以在后面的then中function接收到
        // 当return 123 后面接收到123
        // 当return 一个Promise对象的时候， 后续then中的第一个参数会做为p2的resolve
        return p2
    }, (err) => {
        console.log('失败')
    })
    .then((data) => {
        console.log(data) // 123  p2 的 resolve
        return p3
    })
    .then((data) => {
        console.log(data)
    })